from pyspark import SparkConf, SparkContext
# import os
# os.environ['PYSPARK_PYTHON'] = "/usr/local/anaconda3/envs/pydemo3.8/bin/python3.8"

if __name__ == '__main__':
    # Driver运行的：
    conf = SparkConf().setAppName("WordCountHelloWorld").setMaster("local[*]")
    # 通过SparkCOnf对象构建SparkContext对象
    sc = SparkContext(conf=conf)

    # Executor运行的：
    # 需求：wordcount单词计数，读取HDFS上的words.txt文件，对其内部的单词统计出现的数量
    # 读取文件
    # file_rdd = sc.textFile("hdfs://laoban-test/tmp/hc/pydemo/data/input/words.txt")
    file_rdd = sc.textFile("../data/input/words.txt")

    # 将单词进行切割，得到一个存储全部单词的集合对象
    words_rdd = file_rdd.flatMap(lambda line: line.split(" "))

    # 将单词转换为元组对象，key是单词，value是数字1
    words_with_one_rdd = words_rdd.map(lambda word: (word, 1))

    # 将元组的value 按照key来分组，对所有的value换行执行聚合操作（相加）
    result_rdd = words_with_one_rdd.reduceByKey(lambda a, b: a + b)

    # Driver运行的
    # 通过collect方法收集RDD的数据打印输出
    print(result_rdd.collect())
